1. Technical Field
This disclosure generally relates to content management systems, and more specifically relates to synchronizing information in a content management system.
2. Background Art
A content management system (CMS) allows many users to efficiently share electronic content such as text, audio files, video files, pictures, graphics, etc. Content management systems typically control access to content in a repository. A user may generate content, and when the content is checked into the repository, the content may be subsequently processed by the CMS according to predefined rules. A user may also check out content from the repository, or link to content in the repository while generating content. The rules in a CMS assure that content that comes into or out of the system or that is linked to meets desired criteria specified in the rules.
Known content management systems check their rules when content comes into or out of the system. If a rule is satisfied, the CMS may perform subsequent processing on the content. Known content management systems may include rules related to bursting, linking, and synchronization. Bursting rules govern how a document is bursted, or broken into individual chunks, when the document is checked into the repository. By bursting a document into chunks, the individual chunks may be potentially reused later by a different author. Linking rules are used for importing and associating objects related to a CMS document based on particular elements or attributes from the document as specified by the rules. For example, an XML document that references external images can take advantage of linking rules so that relationships between the XML content and the external images are automatically created when the document is imported or checked into the repository. Another kind of linking rule governs what content in a repository a user may link to in a document that will be subsequently checked into the repository. Synchronization rules govern synchronization between content and metadata related to the content. For example, a synchronization rule may specify that whenever a specified CMS attribute is changed, a particular piece of XML in the content should be automatically updated with that attribute's value.
Another aspect of XML content management involves the assembly of data from various sources into “master” or “parent” documents. A master or parent document can be thought of as a shell or assembly template that gets populated dynamically by the CMS (e.g. when a user views the master or parent document). The most common type of data assembly is reconstitution, or reassembly, of an XML document from a collection of individual chunks or elements in the repository. One way to reconstitute a document is by creating a plug-in chain, which is the subject of the related application “METHOD AND SYSTEM FOR UPDATING DOCUMENT CONTENT AND METADATA VIA PLUG-IN CHAINING IN A CONTENT MANAGEMENT SYSTEM” referenced above. With a plug-in chain the user has much more control over when the CMS executes queries and content rules. However, when content rules need to be evaluated, all of the rules of a specific type (i.e. bursting, linking, synchronization, etc.) must be evaluated, leading to the execution of rules that may not need to be evaluated. A good example of executing unnecessary content rules is synchronization rules.
In known prior art, the assembly of data for an XML document, either with chunk reconstitution or queries, occurs before synchronization. This happens so that the entire resolved XML content can be used when evaluating synchronization rules and because synchronization rules often need to reference multiple elements throughout the master or parent document. Since elements and chunks are themselves templates of CMS chunks, or nested embedded queries, the synchronization rules need to be evaluated repeatedly. However, there are cases where the content will be incorrect if the content is not synchronized both before and after the data is assembled into the parent document. To ensure correct data, all of the synchronization rules must be evaluated every time synchronization might be needed. This results in increased times for documents to be reconstituted and lag time to the user. Without a way to only evaluate the synchronization rules needed for a particular synchronization function, the computer industry will suffer from increasing delays of document reconstitution.